﻿using Ewell.Interface.Common.Model.Constant;
using Ewell.Interface.Common.Model.GateWay.Dto.InsuranceManager;
using Ewell.Interface.Common.Model.GateWay.Dto.Out;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ewell.Interface.Common.Model.GateWay.GateWayUriInfo
{
    public class ExMedInsurSettleDubboService : GateWayUri
    {
        public override string url => "dubbo/cc.ewell.his.insurance.management.dubbo.ExMedInsurSettleDubboService";
        /// <summary>
        /// 1-100028-01 根据日期查询外部医保结算单
        /// </summary>
        public GateWayMethod queryExInsurSettlementByDate => new QueryExInsurSettlementByDate(url);
        /// <summary>
        /// [1-100029-01]同步外部系统医保结算记录
        /// </summary>
        public GateWayMethod syncExInsurSettlementByExample => new SyncExInsurSettlementByExample(url);
        /// <summary>
        /// [1-100031-01]根据外部医保结算单标识列表更新外部医保结算单
        /// </summary>
        public GateWayMethod updateExInsurSettlementById => new UpdateExInsurSettlementById(url);
    }

    public class QueryExInsurSettlementByDate : GateWayMethod
    {
        public QueryExInsurSettlementByDate(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "queryExInsurSettlementByDate";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.QueryExInsurSettlementRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(QueryExInsurSettlementRequest);

        public override Type responseParamType => typeof(List<ExInsurSettlementResponse>);

        public override string desc => "1-100028-01 根据日期查询外部医保结算单";
    }

    public class SyncExInsurSettlementByExample : GateWayMethod
    {
        public SyncExInsurSettlementByExample(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "syncExInsurSettlementByExample";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.SyncExInsurRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(SyncExInsurRequest);

        public override Type responseParamType => typeof(SyncExInsurResponse);

        public override string desc => "[1-100029-01]同步外部系统医保结算记录";
    }

    public class UpdateExInsurSettlementById : GateWayMethod
    {
        public UpdateExInsurSettlementById(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "updateExInsurSettlementById";

        public override string paramClass => "cc.ewell.his.insurance.management.upon.request.UpdateExInsurSettRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(UpdateExInsurSettRequest);

        public override Type responseParamType => typeof(object);

        public override string desc => "[1-100031-01]根据外部医保结算单标识列表更新外部医保结算单";
    }
}
